package io.wit.modules.sys.service;



import io.wit.modules.sys.entity.SysUserEntity;
import io.wit.modules.wit.entity.UserEntity;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 系统用户
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年9月18日 上午9:43:39
 */
public interface SysUserService {

	/**
	 * 查询用户的所有权限
	 * @param userId  用户ID
	 */
	List<String> queryAllPerms(Long userId);
	
	/**
	 * 查询系统用户的所有菜单ID
	*/
	List<Long> queryAllMenuId(final Long userId);

    /**
     * 查询员工用户的所有菜单ID
    */
    List<Long> queryEmployeeMenu(final Long userId);

	/**
	 * 根据用户名，查询系统用户
	 */
	SysUserEntity queryByUserName(String username);
	
	/**
	 * 根据用户ID，查询用户
	 * @param userId
	 * @return
	 */
	SysUserEntity queryObject(Long userId);
	
	/**
	 * 查询用户列表
	 */
	List<SysUserEntity> queryList(Map<String, Object> map);

	List<SysUserEntity> queryListSuperData(Map<String, Object> map);
    int queryListSuperTotal(Map<String, Object> map);

	/**
	 * 查询总数
	 */
	int queryTotal(Map<String, Object> map);


	/**
	 * 保存用户
	 */
	int save(SysUserEntity user);
	
	/**
	 * 修改用户
     */
	void update(SysUserEntity user);
	
	/**
	 * 删除用户
	 */
	void deleteBatch(Long[] userIds);
	
	/**
	 * 修改密码
	 * @param userId       用户ID
	 * @param password     原密码
	 * @param newPassword  新密码
	 */
	int updatePassword(Long userId, String password, String newPassword);
	/**
	 * 
	 * @param userName
	 * @return
	 */
	UserEntity queryObjects(String userName);

	void updates(Long userId, Long subjectId,String deptId);

	void updatePwd(SysUserEntity user);

	int resettingPassword(String userId, String password,String salt);

	HashMap<String,Object> getSubjectInfo(final String userName);

	//审核
    String check(final Long userId);
}